#ifndef _MY_HWMON_H_
#define _MY_HWMON_H_
#include "Arduino.h"

#define USB_PORT_NUMS 4
#define USE_INA226_LIB_A 0

#define DEFAULT_CUT_OFF_CURRENT 2000   // 默认断开电流，2A
#define DEFAULT_ALERT_CURRENT 1500     // 默认警告电流，1.5A
#define DEFAULT_CHART_MIN_CURRENT 0    // 默认图表最小电流
#define DEFAULT_CHART_MAX_CURRENT 500  // 默认图表最大电流

typedef enum {
  USB_PORT_FAIL = 0,  // 未初始化
  USB_PORT_ON,        // 打开，默认
  USB_PORT_OFF,       // 关闭
  USB_PORT_ALERT,     // 关闭
  USB_PORT_OC,        // 过流关闭
} USB_PORT_STATUS_ENUM;

typedef struct
{
  int voltage;         // 电压，毫伏
  int current;         // 电流，毫安
  int power;           // 功率，微瓦
  int currAlert;       // 警告电流,毫安
  int currCutOff;      // 断开电流，毫安
  int chartMin;        // 图表最小电流
  int chartMax;        // 图表最大电流
  uint8_t index;       // 索引
  uint8_t portStatus;  // 状态
  uint8_t swGpio;      // 开关gpio
  uint8_t zw;          // 占位凑整
} InaData;


void i2c_begin(uint32_t clock, int sda, int scl);
void i2c_end();
bool i2c_check_address(uint8_t addr);


int refresh_usb_power_hwmon();
int init_usb_power_hwmon();
int switch_usb_port(uint8_t index, bool on);
int init_hwmon_gpio();
extern InaData inaData[USB_PORT_NUMS];

#endif